Geppetto: Enhancing Smalltalk’s Reflective Capabilities with Unanticipated Reflection
نویسنده
چکیده
Reflection is an important tool to extend and modify the semantics or runtime of applications. However, lot of approaches to support reflection are based on up-front fully reflective or load-time based reflection mechanisms. Using these approaches, it is not possible to apply reflective techniques on running systems without stopping them, unless the system is fully reflection which is very costly. Because many applications and systems exist that cannot be halted and stopped but have to be always on and running, such as web applications, real-time systems or mobile systems, the ability to apply reflective features at runtime is a crucial and important property. Our solution to achieve this possibility is unanticipated reflection. With unanticipated reflection, we can design the MOP required for the problem we want to solve, introduce it in the language, activate the reflective mechanisms and possibly remove them once they are not necessary anymore at runtime, without halting the system or the application in which we want to apply and use the reflective mechanisms. In this thesis we motivate first the need for unanticipated reflection, allowing us to adapt dynamically applications and the system itself. We compare already existing solutions to support reflection in different languages, such as Reflex [TANT 03] or Iguana/J [REDM 02], and learn that these proposals have several shortcomings. Hence we develop our own proposal, an approach to unanticipated reflection in the context of dynamically-typed languages. To provide unanticipated reflection in an efficient as well as expressive way we reuse the partial behavioral reflection model of Reflex. We believe that this model supports best our demands and requirements for unanticipated reflection and fits well into the concept of dynamic languages. We also propose a concrete implementation of unanticipated reflection by providing a reflective framework for Squeak/Smalltalk, called GEPPETTO, which allows us to install behavioral reflective features unanticipated into the running Squeak system ubiquitously. This reflective framework supporting unanticipated partial behavioral reflection is particulary useful to debug or profile running applications or to temporarily test extensions or adaptations of a system that cannot be halted. Another purpose is the implementation of cross-cutting behavior of an application in a causally connected but separated metalevel, similar as in aspect-oriented programming.
منابع مشابه
Unanticipated Partial Behavioral Reflection
Dynamic, unanticipated adaptation of running systems is of interest in a variety of situations, ranging from functional upgrades to onthe-fly debugging or monitoring of critical applications. In this paper we study a particular form of computational reflection, called unanticipated partial behavioral reflection, which is particularly well-suited for unanticipated adaptation of real-world system...
متن کاملUnanticipated partial behavioral reflection: Adapting applications at runtime
Dynamic, unanticipated adaptation of running systems is of interest in a variety of situations, ranging from functional upgrades to on-the-fly debugging or monitoring of critical applications. In this paper we study a particular form of computational reflection, called unanticipated partial behavioral reflection, which is particularly well-suited for unanticipated adaptation of real-world syste...
متن کاملRun-Time Evolution through Explicit Meta-Objects
Software must be constantly adapted due to evolving domain knowledge and unanticipated requirements changes. To adapt a system at run-time we need to reflect on its structure and its behavior. Objectoriented languages introduced reflection to deal with this issue, however, no reflective approach up to now has tried to provide a unified solution to both structural and behavioral reflection. This...
متن کاملReflective Learning and Teaching: A Review
Introduction: One of the most important characteristic of human being is his ability to learn. Structuralists believe that learning is an active process through which learners explores the principles, meanings and facts by themselves. Learner’s participation in learning process is one of the active learning strategies and reflective learning is considered as an active teaching method which is i...
متن کاملAdaptiveness of Software Systems Using Reflection
This paper deals with basic principles of metaprogramming and reflection with connection to aspect-oriented programming (AOP). Metaprogramming is about writing programs that represents and manipulate other programs or themselves, i.e. metaprograms are programs about programs. The impact of metaprogramming is obvious in traditional development processes, by sorting existing programs as transform...
متن کامل